??雲應用是近幾年來熱門的名詞,用白話說明的話,就是一台或N台伺服器架設在某個大型機房,提供了各種儲存資料,數據計算及網路服務.
而我們此次的30天專題,Flask 就是利用一台伺服器及雲端提供的子網域,讓我們在每天可以利用它為自己的工作寫個小小的隨身記錄.
目前大家比較會去使用的雲端服務的大廠有三大家
此次會選擇Azure 主要的原因就是學習門檻相對其他三大家來說提供了比較多的中文化資料及初次註冊就有6000元台幣左右的的試用資源,讓我們新手剛接觸雲端服務就不需要太擔心下個月突然收到一堆莫名的帳單,然後準備吃土(望向隔壁棚的AWS不是那麼友善的管理整合界面)
在第八天還沒註冊的朋友,這裡容我跳過註冊的步驟,照著微軟的說明,準備上你的信用卡之後一切真的不難.
前二天我們利用了SaaS軟體即服務 和MongoDB的Atlas公共雲端資料庫連線
今天就讓我們來利用它,建一個MySQL Ver8.0 的資料庫,學習Python如何使用程式碼直接接上Azure 提供的資料庫服務吧.
文件參考:Python和Azure資料庫資源連結
SQL 教學(w3school
有玩過微軟的Windows SERVER系列的人應該都會知道 AD 這個舉足輕重的設定
套用到Azure的時候,這個概念也更加進階了.關於AD的WiKi
在開始連接資料庫前,請先在AD 建立一個管理者的角色
1.新增一個角色的目的是為了日後有最大的權限可以控制所有的資源存取,建立的過程密碼請自行保存好,弄丟了很麻煩的!!!!
(謎之音:也方便微軟向各位使用者收費
2.新增一個資源群組
3.新增一個資料庫
4.下載MySQL Workbench 8 CE
5.依照這個說明文件的操作流程,先熟悉一下SQL的相閞語法
6.對資料庫指派先前由AD建立起來的管理者
7.準備用Python 連接Azure MySQL
Python 使用MySQL 常見的套件有 PySQL/SQLAlchemy/mysql-connector-python
今天我們就跟著巨人的步伐,使用mysql-connector-python套件吧
程式範例引用自Microsoft example ,其中需要修改的設定
Host:請改成自己申請的資料庫伺服器名稱
user:請改成自己申請的資料庫管理角色
password:請改成自己申請的資料庫管理密碼
database::請改成自己先前的資料庫名稱如果沒有,建議先在workbench 建立一個練習用的資料庫,建立的同時,請調整使用
;
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed).")
# Create table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table.")
# Insert some data into table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Day 12 好想停筆1天,放鬆一下...